home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
T-COMAL Today
/
(k)ta.d64
/
use'sound.proc
< prev
next >
Wrap
Text File
|
2007-02-28
|
3KB
|
119 lines
9000 //
9005 // PROCEDURES TO EMULATE THE
9010 // SOUND PACKAGE FROM 2.0
9015 // FOR VERSION 0.14
9020 //
9025 PROC ADSR(STEM,A,D,S,R)
9030 P:=5+(STEM-1)*7
9035 POKE SID+P,A*16+D
9040 POKE SID+P+1,S*16+R
9045 ENDPROC ADSR
9050 //
9055 PROC VOLUME(STERKTE)
9060 POKE SID+24,STERKTE
9065 ENDPROC VOLUME
9070 //
9075 PROC GATE(STEM,JN)
9080 P:=4+(STEM-1)*7
9085 W:=CONTROL(STEM)
9090 IF JN THEN
9095 W:=W-(W MOD 2)+1
9100 ELSE
9105 W:=W-(W MOD 2)
9110 ENDIF
9115 POKE SID+P,W
9120 CONTROL(STEM):=W
9125 ENDPROC GATE
9130 //
9135 PROC SOUNDTYPE(STEM,SRT)
9140 P:=4+(STEM-1)*7
9145 CONTROL(STEM):=2^(SRT+3)
9150 POKE SID+P,CONTROL(STEM)
9155 ENDPROC SOUNDTYPE
9160 //
9165 PROC USE'SOUND
9170 SID:=54272
9175 FOR P:=0 TO 24 DO POKE SID+P,0
9180 //
9185 DIM NOTEN$ OF 3*96, VALUE(0:95)
9190 DIM CONTROL(3)
9195 //
9200 NR:=-1
9205 FOR OKT:=0 TO 7 DO
9210 RESTORE // BASIS
9215 FOR NT:=1 TO 12 DO
9220 NR:+1
9225 READ B
9230 W:=B/2^(7-OKT)
9235 VALUE(NR):=W
9240 ENDFOR NT
9245 ENDFOR OKT
9250 //
9255 FOR NT:=0 TO 95 DO
9260 READ NOTEN$(NT*3+1:NT*3+3)
9265 ENDFOR NT
9270 //
9275 INIT'VOICES
9280 //
9285 BASIS:
9290 DATA 34334,36376,38539,40830
9295 DATA 43258,45830,48556,51443
9300 DATA 54502,57743,61176,64814
9305 //
9310 NOTENRIJ:
9315 DATA "C0","C0#","D0","D0#","E0","F0","F0#","G0","G0#","A0","A0#","B0"
9320 DATA "C1","C1#","D1","D1#","E1","F1","F1#","G1","G1#","A1","A1#","B1"
9325 DATA "C2","C2#","D2","D2#","E2","F2","F2#","G2","G2#","A2","A2#","B2"
9330 DATA "C3","C3#","D3","D3#","E3","F3","F3#","G3","G3#","A3","A3#","B3"
9335 DATA "C4","C4#","D4","D4#","E4","F4","F4#","G4","G4#","A4","A4#","B4"
9340 DATA "C5","C5#","D5","D5#","E5","F5","F5#","G5","G5#","A5","A5#","B5"
9345 DATA "C6","C6#","D6","D6#","E6","F6","F6#","G6","G6#","A6","A6#","B6"
9350 DATA "C7","C7#","D7","D7#","E7","F7","F7#","G7","G7#","A7","A7#","B7"
9355 //
9360 ENDPROC USE'SOUND
9365 //
9370 PROC NOTE(STEM,N$)
9375 NR:=((N$ IN NOTEN$)-1)/3
9380 P:=(STEM-1)*7
9385 POKE SID+P,VALUE(NR) MOD 256
9390 POKE SID+P+1,VALUE(NR) DIV 256
9395 ENDPROC NOTE
9400 //
9405 PROC INIT'VOICES
9410 ADSR(1,0,4,12,10)
9415 ADSR(2,10,8,10,9)
9420 ADSR(3,1,9,1,9)
9425 FOR STEM:=1 TO 3 DO
9430 PULSE(STEM,2048)
9435 SETFREQUENCY(STEM,0)
9440 ENDFOR STEM
9445 VOLUME(15)
9450 SOUNDTYPE(1,1)
9455 SOUNDTYPE(2,2)
9460 SOUNDTYPE(3,3)
9465 ENDPROC INIT'VOICES
9470 //
9475 PROC PULSE(STEM,F)
9480 P:=2+(STEM-1)*7
9485 POKE SID+P,F MOD 256
9490 POKE SID+P+1,F DIV 256
9495 ENDPROC PULSE
9500 //
9505 PROC SETFREQUENCY(STEM,F)
9510 P:=(STEM-1)*7
9515 POKE SID+P,F MOD 256
9520 POKE SID+P+1,F DIV 256
9525 ENDPROC SETFREQUENCY
9530 //
9535 PROC DISCARD
9540 SID:=54272
9545 FOR P:=0 TO 24 DO POKE SID+P,0
9550 ENDPROC DISCARD
9555 //
9560 // EXAMPLE:
9565 // RUN
9570 //USE'SOUND
9575 //NOTE(1,"C4")
9580 //GATE(1,1)
9585 //GATE(1,0)